package middlewares

import (
	"gin_im/helper"
	"github.com/gin-gonic/gin"
	"net/http"
)

// AuthCheck 认证中间件
func AuthCheck() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 从请求头获取token
		token := c.GetHeader("token")
		// 解析验证token
		userClaims, err := helper.AnalyseToken(token)
		// 认证失败处理
		if err != nil {
			c.Abort() // 终止后续处理
			c.JSON(http.StatusOK, gin.H{
				"code": -1,
				"msg":  "用户认证不通过",
			})
			return
		}

		c.Set("user_claims", userClaims) // 认证成功，将用户信息存入上下文
		c.Next()                         // 继续后续处理（默认会自动调用）
	}
}
